#pragma once
//============================================================================
// Copyright (C) 2009-2013 Brett R. Jones 
// All Rights Reserved
//
// You may redistribute and/or modify for non commercial and commercial uses 
// provided this copyright notice remains in place and is not modified
//
// This code is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//
// brettjones1900@gmail.com
// http://www.p2panarchy.com
//============================================================================
class RcSysRxSearchEvent
{
public:
	//=== vars ===//
	std::string				m_strPluginName;
	RcSysPktAnnounce *		m_poPktAnn;
	U64						m_u64UserData;
	U64						m_u64SeachHandle;

	//=== constructor ===//
	RcSysRxSearchEvent();
	//=== constructor ===//
	RcSysRxSearchEvent( const char *		pPluginName, 
						RcSysPktAnnounce *	poPktAnn,
						U64					u64UserData,
						U64					u64SeachHandle );

	//=== destructor ===//
	virtual ~RcSysRxSearchEvent();

	//=== methods ===//

};

class RcSysRxSearchEventQue 
{
public:
	//=== constructor ===//
	RcSysRxSearchEventQue();
	//=== destructor ===//
	virtual ~RcSysRxSearchEventQue();

	//=== methods ===//
	//! add event to que
	void			AddRxSearchEvent( RcSysRxSearchEvent * poEvent );
	//! remove event from que.. returns null if no events avalil
	RcSysRxSearchEvent *	RemoveRxSearchEvent(  void );

	//=== vars ===//
	VxMutex								m_oRxSearchEventMutex;
	std::vector<RcSysRxSearchEvent*>	m_aoRxSearchEvents;
};



